作者:炫彩十字绣I_775 | 来源:互联网 | 2022-12-13 16:23
到目前为止,我可以通过PAT进行身份验证并包含外部CI脚本,但是$CI_JOB_TOKEN
更安全的方法是使用访问权限,因为它更安全且受限制。我正在研究是否可以通过这种方式完成-
include 'https://gitlab-ci-token:${CI_JOB_TOKEN}@raw-file-url'
我曾尝试在虚拟脚本作业中以这种格式卷曲,但是无法获取文件。
显然,可以使用文件API和$ CI_JOB_TOKEN(https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/2346/diffs)导入外部脚本,但是我正在研究include
功能是否也支持此功能。任何有关如何实现这一目标的建议都值得赞赏。
1> Jonathon Rei..:
不幸的是,CI_JOB_TOKEN
范围非常有限。截至今天(GitLab 11.0),您只能用它做两件事:
使用GitLab容器(Docker)注册表进行身份验证
进行身份验证以触发多项目管道(仅适用于EE)
参考文献:
https://docs.gitlab.com/ce/ci/variables/
https://docs.gitlab.com/ee/ci/variables/
所以,你不能使用CI_JOB_TOKEN
从另一个仓库,无论是通过原始端点(下载文件/raw/[/]
),也不是API。
不幸的是,部署密钥也无济于事-它们仅适用于SSH。
我想出的唯一可行的解决方案是使用一个单独的用户:
创建一个具有Reporter
角色的新用户。
/profile/personal_access_tokens
为具有api和read_repository权限的该用户创建个人访问令牌()。
将此令牌作为秘密变量添加到项目CI / CD设置中。称它为BUILD_USER_TOKEN
。
使用$BUILD_USER_TOKEN
你的CI脚本访问API或项目文件。
这是一个巨大的黑客,我真的希望看到GitLab制作CI_JOB_TOKEN
一个具有指定资源权限的一流的只读(?)令牌。
他们在令牌描述中添加了“下载从属存储库”,他们可能扩展了功能!